<?php

# -- DÉBUT NOTE DE LICENCE -------------------------------------
#
# Ce fichier fait partie de Clicpage.
#
# Copyright (c) 2010 Francois (www.clicpage.net)
# Distribué selon les termes de la licence GPL version 2.0.
# Consultez le fichier LICENCE ou
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# -- FIN NOTE DE LICENCE ---------------------------------------

class cpModuleModifierGroupeUtilisateurs extends cpModuleAdmin
{

	
	
	
	
	protected $groupe;
	protected $nouveau;
	
	
	
	
	
	/// @name Initialisation
	//@{
	

	public function __construct($core)
	{
		parent::__construct($core);   
	
		# Permission nécessaire: utilisateurs
		$this->core->auth->verifierPermission('utilisateurs', true);

		if(	( empty($_GET['groupe_id']) || !is_numeric($_GET['groupe_id']) ) && $_GET['nouveau'] != 1) {
			http::redirect('index.php?module=groupesUtilisateurs');
		}
		
		# Modification d'un groupe existant
		if($_GET['nouveau'] != 1) {
			
			$this->groupe = $this->core->site->getGroupesUtilisateurs(array(
				'groupe_id' => (integer) $_GET['groupe_id']
			), CP_GET_STATIC);
			
			if($this->groupe->isEmpty()) {
				http::redirect('index.php?module=groupeUtilisateurs');
			}

			$this->nouveau = false;
			
			$this->setTitreModule(__('Éditer le groupe d\'utilisateurs'));
			
		}
		else
		{
			$this->nouveau = true;
			$this->setTitreModule(__('Nouveau groupe d\'utilisateurs'));
		}
		
		$this->setPrev('groupesUtilisateurs', __('Groupes d\'utilisateurs'));
		$this->ajouterBoutonAction(__('Enregistrer'), '#', 'boutonAction_enregistrer');
		
		$this->setActionsAutorisees('modifierGroupeUtilisateurs', 'nouveauGroupeUtilisateurs');
		
		# CSS et Javascript
		$this->setJavascript('modifierGroupeUtilisateurs');
		
	}
	//@}
    
	
	

	
	/// @name Formulaires
	//@{
	
	
	public function action_modifierGroupeUtilisateurs()
	{
		$this->groupe->enregistrer($_POST['groupe_nom'], $_POST);
		$this->messageOK(__('Le groupe d\'utilisateurs a été mis à jour avec succès.'));
	}
	
	public function action_nouveauGroupeUtilisateurs()
	{
		$this->groupe = $this->core->site->creerGroupeUtilisateurs($_POST['groupe_nom'], $_POST);
		$this->nouveau = false;
		$this->messageOK(__('Le groupe d\'utilisateurs a été créé avec succès.'));
	}
	//@} 
    
	

	
	
	/// @name Interface du module
	//@{
	
	
	public function interfaceModule()
	{
		
		# Nouveau groupe
		if($this->nouveau)
		{
			$action = 'nouveauGroupeUtilisateurs';
			
			$formAction = 'index.php?module=modifierGroupeUtilisateurs&nouveau=1';
			
			# Valeur des champs de formulaire
			$groupe_id = 'nouveau';
			$groupe_nom = $this->erreursFormulairePresentes() ? $_POST['groupe_nom'] : '';
			
			# Permissions
			$groupe_permissions = array();
			
			if($this->erreursFormulairePresentes()) {
				foreach($this->core->auth->getPermissionsDisponibles() as $k => $v) {
					$groupe_permissions[$k] = $_POST['permission_'.$k] == '1' ? true : false;
				}
			}
			
		}
		# Groupe existant
		else
		{
			$action = 'modifierGroupeUtilisateurs';
			
			$formAction = 'index.php?module=modifierGroupeUtilisateurs&groupe_id='.(integer) $this->groupe->groupe_id;
			
			# Valeur des champs de formulaire
			$groupe_id = $this->groupe->groupe_id;
			$groupe_nom = $this->erreursFormulairePresentes() ? $_POST['groupe_nom'] : $this->groupe->groupe_nom;

			# Permissions
			$groupe_permissions = array();
			
			if(!$this->erreursFormulairePresentes()) {
				$groupe_permissions = $this->groupe->groupe_permissions;
			}
			else
			{
				foreach($this->core->auth->getPermissionsDisponibles() as $k => $v) {
					$groupe_permissions[$k] = $_POST['permission_'.$k] == '1' ? true : false;
				}
			}
			
		}


		# HTML de l'interface
		$html =
		'<form id="formulaireModifierGroupeUtilisateurs" action="'.$formAction.'" method="post">'.
		$this->afficherMessages().
		$this->core->nonceHTML($action).
		form::hidden('action', $action).
		form::hidden('groupe_id', $groupe_id).
		'<fieldset>'.
			'<legend>'.__('Général').'</legend>'.
			'<p>'.
				'<label for="groupe_nom">'.__('Nom du groupe').'</label>'.
				$this->field('groupe_nom', 40, 50, html::escapeHTML($groupe_nom)).
			'</p>'.
		'</fieldset>'.
		'<fieldset>'.
			'<legend>'.__('Permissions').'</legend>'.
			'<div id="permissions">';
	
		foreach($this->core->auth->getPermissionsDisponibles() as $k => $v)
		{
			$html.=
				'<p>'.
					form::checkbox('permission_'.html::escapeHTML($k), 1, $groupe_permissions[$k], NULL, NULL, false, 'permission="'.html::escapeHTML($k).'"').
					html::escapeHTML($v[0]).
				'</p>';
		}
			
		$html.=
			'</div>'.
		'</fieldset>'.
		'<input type="submit" value="'.__('Enregistrer').'" />'.
		'</form>';
		
		return $html;
			
	}

	
	public function head()
	{
		$headContent =
		'<script type="text/javascript">
			var prealablesPermissions = new Array();';
		
		foreach($this->core->auth->getPermissionsDisponibles() as $k => $v)
		{
			
			$prealables = array();
			
			foreach($v[2] as $prealable) {
				$prealables[] = '"'.$prealable.'"';
			}
			
			$headContent.=
			'prealablesPermissions["'.$k.'"] = new Array('.implode(', ', $prealables).');'."\n";
			
		}
		
		$headContent.=
		'</script>';
		
		return $headContent;		
	}
	//@}
	
	
}

?>